1. Statement of the Technical Field
The present invention relates to field of software development and more particularly to the model driven development of a software application.
2. Description of the Related Art
Modern software systems have become increasingly pervasive and open-ended, and are expected to deliver critical computing services in a dependable manner across multiple, heterogeneous computing environments. To better manage the complexity of developing modern software systems, software development strategies can be employed which raise the level of abstraction at which software systems are conceived, implemented and evolved. Model-driven development (MDD) represents one such software development strategy in which models are the primary artifacts of software development. As used herein, a “model” refers to a collection of information having a well-defined containment hierarchy.
Modeling complex applications has several general benefits which can include a better understanding of the business or engineering situation at hand, the construction and design of an application architecture, and the creation of visualizations of code and other forms of implementation. Although some may argue that application visualization alone does not constitute a model, the essence of modeling is abstraction and any visualization of code is indeed an abstraction in that application information can be selectively exposed while details deemed unnecessary or unwanted can be suppressed. Nevertheless, the terms “code model”, “implementation model” or “platform-specific model” (PSM) are often used to qualify such abstractions from a higher-level, platform independent model (PIM) that does not have such direct relationships to program code.
In conventional MDD, visual models can be created from a methodological process that often begins with application requirements and culminates with a high-level architectural design model. Developers can create a detailed design model from which skeletal code can be generated to an integrated development environment. The integrated development environment, in turn, can be used to complete the detailed coding. Any changes to the code that affect the design model can be synchronized back into the model. Likewise, any model changes can be synchronized into the existing code.
Modern trends in MDD include software development tools and techniques that support the vision of the Object Management Group as framed by the “Model Driven Architecture” (MDA). The MDA advocates an approach in which models of software that abstract over technology-specific details are systematically transformed to deployable technology-specific implementations. In this regard, a transformation defines changes that are applied to a source model to produce a target model. While the models enjoy specific relationships between one another, the transformation steps are often a discontinuous jump forward rather than a specifiable mechanical transformation. The discontinuous jump is most noticeable in the early stages of design refinement and solution exploration where fundamental decisions are made by the software engineer in order to satisfy solution requirements.
Systematic support for model transformations is considered to be critical to the success of the MDA. Often referred to as a model-to-model transformation, the source and target models can be based upon a meta-model like the unified modeling language (UML), including customer specific meta-models. For example, the PIM can be a UML2 model marked up with stereotypes and the resulting PSM created by the transformation might be Java code modules. At present model-to-model transformations are manually driven and can require substantial expertise and development resources to perfect. Yet, as MDD matures, it will be desirable to automate the generation of a PSM from a PIM such that the transformation can fit the mold of a code generator.